﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using QuanLyHocPhi.Model;
using QuanLyHocPhi.BLL;

namespace QuanLyHocPhi.GUI
{
    public partial class FormLop_Details : Form
    {
        private bool m_IsAdding;
        private bool IsAdding
        {
            get { return m_IsAdding; }
            set
            {
                m_IsAdding = value;
                if (m_IsAdding)
                {
                    this.ActiveControl = txtTenLop;
                    this.Text = "Bổ sung lớp";
                }
                else
                {
                    this.ActiveControl = txtTenLop;
                    this.Text = "Chỉnh sửa lớp";
                }
            }
        }

        private Lop m_Lop;

        public FormLop_Details(bool isAdding, Lop pLop)
        {
            InitializeComponent();
            cbxTruong.DataSource = BizTruong.GetList_Truong();
            cbxTruong.DisplayMember = "TenTruong";
            cbxTruong.ValueMember = "MaTruong";
            this.IsAdding = isAdding;
            this.m_Lop = pLop;
            DisplayData();
        }
        public FormLop_Details(bool isAdding, Lop pLop,bool chuyen)
        {
            InitializeComponent();
            cbxTruong.DataSource = BizTruong.GetList_Truong();
            cbxTruong.DisplayMember = "TenTruong";
            cbxTruong.ValueMember = "MaTruong";
            this.IsAdding = isAdding;
            this.m_Lop = pLop;
            DisplayData();
            cbxTruong.Enabled = false;
        }

        private void DisplayData()
        {
            txtTenLop.Text = m_Lop.TenLop;
            if (m_Lop.MaTruong != null)
                cbxTruong.SelectedValue = m_Lop.MaTruong;
            txtNamTuyenSinh.Text = m_Lop.NamTuyenSinh.ToString();
        }

        private void OnOKClick(object sender, EventArgs e)
        {
            #region Thu thập dữ liệu
            epMain.Clear();
            string tenLop = txtTenLop.Text.Trim();
            if (tenLop.IsNullOrEmpty())
            {
                epMain.SetError(txtTenLop, "Tên lớp không hợp lệ!");
                txtTenLop.Focus();
                return;
            }
            string maTruong = null;
            if (cbxTruong.SelectedValue != null)
                maTruong = cbxTruong.SelectedValue.ToString();
            if (maTruong.IsNullOrEmpty())
            {
                epMain.SetError(cbxTruong, "Chọn trường/khoa trực thuộc cho lớp!");
                cbxTruong.Focus();
                return;
            }
            int namTuyenSinh = -1;
            string stNamTuyenSinh = txtNamTuyenSinh.Text.Trim();
            if (stNamTuyenSinh.IsNullOrEmpty() == false)
            {
                try
                {
                    namTuyenSinh = Convert.ToInt32(stNamTuyenSinh);
                }
                catch
                {
                    epMain.SetError(txtNamTuyenSinh, "Thông tin năm tuyển sinh không hợp lệ!");
                    txtNamTuyenSinh.Focus();
                    return;
                }
            }
            #endregion

            #region Thực hiện lệnh cập nhật
            Lop lop = new Lop
            {
                MaLop = m_Lop.MaLop,
                TenLop = tenLop,
                NamTuyenSinh = namTuyenSinh,
                MaTruong = maTruong
            };
            try
            {
                if (IsAdding)
                    BizTruong.Add_LopKhongChuyen(lop);
                else
                    BizTruong.Update_LopKhongChuyen(lop);
                m_Lop.MaLop = lop.MaLop;
                m_Lop.TenLop = lop.TenLop;
                m_Lop.NamTuyenSinh = lop.NamTuyenSinh;
                m_Lop.MaTruong = lop.MaTruong;
                this.DialogResult = System.Windows.Forms.DialogResult.OK;
                this.Close();
            }
            catch (Exception exc)
            {
                DialogUtils.ShowError(exc.Message);
            }
            #endregion
        }

        private void OnTenLopKeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                e.Handled = true;
                cbxTruong.Focus();
            }
        }

        private void OnNamTuyenSinhKeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyData == Keys.Enter)
            {
                e.SuppressKeyPress = true;
                e.Handled = true;
                btnOK.PerformClick();
            }
        }
    }
}
